#!/bin/bash

# Electron-IM 环境检查脚本
# 检查开发环境是否正确配置

echo "🔍 检查 Electron-IM 开发环境..."

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# 检查函数
check_command() {
    local cmd=$1
    local name=$2
    local required=$3
    
    if command -v $cmd &> /dev/null; then
        local version=$($cmd --version 2>/dev/null || $cmd -v 2>/dev/null || echo "未知版本")
        echo -e "${GREEN}✅ $name${NC}: $version"
        return 0
    else
        if [[ "$required" == "required" ]]; then
            echo -e "${RED}❌ $name${NC}: 未安装"
            return 1
        else
            echo -e "${YELLOW}⚠️  $name${NC}: 未安装（可选）"
            return 0
        fi
    fi
}

# 检查 Node.js 版本是否符合要求
check_node_version() {
    if command -v node &> /dev/null; then
        local version=$(node -v)
        if [[ "$version" == v20* ]]; then
            echo -e "${GREEN}✅ Node.js 版本${NC}: $version (符合要求)"
            return 0
        else
            echo -e "${YELLOW}⚠️  Node.js 版本${NC}: $version (推荐使用 v20)"
            return 1
        fi
    else
        echo -e "${RED}❌ Node.js${NC}: 未安装"
        return 1
    fi
}

# 检查 nvm 是否可用
check_nvm() {
    if command -v nvm &> /dev/null; then
        local version=$(nvm --version)
        echo -e "${GREEN}✅ nvm${NC}: $version"
        return 0
    else
        echo -e "${YELLOW}⚠️  nvm${NC}: 未安装或未配置环境变量"
        return 1
    fi
}

# 检查 .nvmrc 文件
check_nvmrc() {
    if [[ -f ".nvmrc" ]]; then
        local version=$(cat .nvmrc)
        echo -e "${GREEN}✅ .nvmrc${NC}: $version"
        return 0
    else
        echo -e "${YELLOW}⚠️  .nvmrc${NC}: 文件不存在"
        return 1
    fi
}

# 检查当前目录是否是项目根目录
check_project_root() {
    if [[ -f "package.json" && -f "pnpm-workspace.yaml" ]]; then
        echo -e "${GREEN}✅ 项目根目录${NC}: 正确"
        return 0
    else
        echo -e "${RED}❌ 项目根目录${NC}: 请在 Electron-IM 项目根目录下运行此脚本"
        return 1
    fi
}

# 检查网络连接
check_network() {
    if curl -s --connect-timeout 5 https://registry.npmjs.org > /dev/null; then
        echo -e "${GREEN}✅ 网络连接${NC}: 正常"
        return 0
    else
        echo -e "${YELLOW}⚠️  网络连接${NC}: 可能存在问题，建议检查网络设置"
        return 1
    fi
}

# 检查 npm 镜像源
check_npm_registry() {
    local registry=$(npm config get registry)
    if [[ "$registry" == "https://registry.npmmirror.com/" ]]; then
        echo -e "${GREEN}✅ npm 镜像源${NC}: 已设置为国内镜像"
        return 0
    else
        echo -e "${YELLOW}⚠️  npm 镜像源${NC}: $registry (建议设置为国内镜像)"
        return 1
    fi
}

# 执行检查
echo ""
echo -e "${BLUE}📋 环境检查结果:${NC}"
echo ""

errors=0

check_project_root || ((errors++))
echo ""
check_command "node" "Node.js" "required" || ((errors++))
check_node_version || ((errors++))
echo ""
check_command "npm" "npm" "required" || ((errors++))
check_command "pnpm" "pnpm" "required" || ((errors++))
echo ""
check_nvm || ((errors++))
check_nvmrc || ((errors++))
echo ""
check_network || ((errors++))
check_npm_registry || ((errors++))

echo ""
echo -e "${BLUE}📊 检查总结:${NC}"

if [[ $errors -eq 0 ]]; then
    echo -e "${GREEN}🎉 环境配置完美！可以开始开发了。${NC}"
    echo ""
    echo "📋 下一步操作:"
    echo "1. 安装依赖: pnpm install"
    echo "2. 启动项目: pnpm dev"
else
    echo -e "${YELLOW}⚠️  发现 $errors 个问题，请根据上述提示进行修复。${NC}"
    echo ""
    echo "🔧 修复建议:"
    echo "1. 运行环境设置脚本: ./scripts/setup-env.sh"
    echo "2. 或者参考 README.md 中的手动设置步骤"
    echo "3. 如果问题持续存在，请查看 README.md 中的问题排查部分"
fi

echo ""
